Архитектура ОС

Подсистема ввода-вывода

Архитектура ОС

План лекции

1. Архитектура подсистемы ввода-вывода

2. Управление устройствами

3. Методы ввода-вывода

4. Безопасность и управление доступом

Подсистема ввода-вывода
Архитектура ОС

Введение

  • Подсистема ввода-вывода (В/В) обеспечивает взаимодействие компьютера с внешним миром
  • Управляет клавиатурами, мышами, мониторами, дисковыми накопителями, сетевыми картами и др.
  • Эффективность и надежность подсистемы В/В напрямую влияют на общую производительность и стабильность системы
  • Понимание архитектуры В/В необходимо для разработки эффективных и надёжных ОС
Подсистема ввода-вывода
Архитектура ОС

1. Архитектура подсистемы ввода-вывода

1.1. Общая структура подсистемы В/В

Подсистема В/В включает четыре основные части:

  • Ядро ОС — общий контроль и координация всех подсистем, включая подсистему В/В
  • Драйверы устройств — программные модули, специфичные для каждого типа устройства
  • Аппаратные контроллеры устройств — электронные схемы, управляющие работой устройства
  • Устройства — периферийные устройства, с которыми взаимодействует компьютер
Подсистема ввода-вывода
Архитектура ОС

1.2. Аппаратная и программная составляющие

Аппаратная составляющая:

  • Контроллеры устройств — специализированные чипы для управления физическими операциями
  • Шины данных (PCI, USB) — связь между компонентами системы
  • Порты ввода-вывода

Программная составляющая:

  • Драйверы устройств
  • API для доступа к устройствам
  • Подсистемы управления памятью и прерываниями
Подсистема ввода-вывода
Архитектура ОС

1.3. Драйверы устройств: роль

Драйверы — программные модули, обеспечивающие связь между ОС и конкретным устройством. Они переводят общие запросы ОС в специфические команды устройства.

Роль драйверов:

  • Абстрагирование аппаратных деталей от ядра ОС
  • Обработка прерываний от устройств
  • Управление потоком данных между устройством и памятью
Подсистема ввода-вывода
Архитектура ОС

1.3. Драйверы устройств: структура

Типичный драйвер устройства состоит из нескольких частей:

  • Инициализация — загрузка и настройка драйвера при старте системы
  • Обработчики прерываний — код, выполняемый при получении прерывания от устройства
  • Функции управления — чтение, запись и другие операции с устройством
Подсистема ввода-вывода
Архитектура ОС

1.4. Уровни абстракции в подсистеме В/В

Подсистема В/В реализуется с использованием уровней абстракции для упрощения разработки и повышения гибкости:

  • Аппаратный уровень — непосредственная работа с аппаратным обеспечением устройства
  • Уровень драйверов — интерфейс между ядром ОС и аппаратным уровнем
  • Уровень API — стандартизированный интерфейс для приложений без знания деталей реализации
Подсистема ввода-вывода
Архитектура ОС

2. Управление устройствами

2.1. Регистрация и инициализация устройств

При запуске системы ОС обнаруживает и регистрирует все подключённые устройства:

  • Обнаружение подключённых устройств
  • Загрузка соответствующих драйверов
  • Выделение ресурсов (адреса памяти, номера прерываний, каналы DMA)
  • Настройка параметров работы устройств
Подсистема ввода-вывода
Архитектура ОС

2.2. Распределение ресурсов и управление конфликтами

Распределяемые ресурсы:

  • Адреса памяти
  • Номера прерываний (IRQ)
  • Каналы DMA
  • Порты ввода-вывода

Управление конфликтами:

  • Несколько устройств не могут использовать один и тот же ресурс
  • ОС разрешает конфликты при обнаружении
  • Plug-and-Play — автоматическое распределение
Подсистема ввода-вывода
Архитектура ОС

2.3. Обработка прерываний от устройств

  • Устройства используют прерывания для уведомления ЦП о завершении операции или событии
  • ОС должна обеспечивать своевременную и корректную обработку прерываний
  • Эффективная обработка прерываний критична для производительности системы
Подсистема ввода-вывода
Архитектура ОС

2.4. Буферизация данных

Назначение:

  • Сглаживание различий в скорости между устройствами и ЦП
  • Временное хранение данных в буферах
  • ЦП обрабатывает данные в удобном темпе

Виды буферизации:

  • Одиночный буфер
  • Двойной буфер (double buffering)
  • Циклический буфер (circular buffer)
Подсистема ввода-вывода
Архитектура ОС

3. Методы ввода-вывода

3.1. Программируемый ввод-вывод (PIO)

ЦП напрямую управляет каждым этапом операции В/В, читая и записывая данные в регистры контроллера устройства.

  • Принцип работы: ЦП опрашивает состояние устройства в цикле
  • Преимущества: Простота реализации
  • Недостатки: Низкая производительность, большая загрузка ЦП
  • ЦП тратит много времени на ожидание завершения операции
Подсистема ввода-вывода
Архитектура ОС

3.2. Ввод-вывод, управляемый прерываниями

ЦП инициирует операцию В/В, затем занимается другими задачами. При завершении операции устройство генерирует прерывание.

  • Принцип работы: Асинхронное уведомление через прерывания
  • Преимущества: Более высокая производительность, меньшая загрузка ЦП
  • Недостатки: Всё ещё требует участия ЦП для каждой операции В/В
Подсистема ввода-вывода
Архитектура ОС

3.3. Прямой доступ к памяти (DMA)

Устройство напрямую передаёт данные в память или из памяти, минуя ЦП. Используется специальный контроллер DMA.

  • Принцип работы: Контроллер DMA управляет передачей данных между устройством и памятью
  • Преимущества: Самая высокая производительность, минимальная загрузка ЦП
  • Недостатки: Требует наличия контроллера DMA
Подсистема ввода-вывода
Архитектура ОС

3.4. Сравнение методов ввода-вывода

Метод Загрузка ЦП Производительность Сложность реализации
PIO Высокая Низкая Простая
Interrupt-Driven I/O Средняя Средняя Средняя
DMA Низкая Высокая Сложная
Подсистема ввода-вывода
Архитектура ОС

3.4. Выбор метода ввода-вывода

Выбор оптимального метода зависит от требований:

  • PIO — простые устройства, низкая интенсивность обмена
  • Interrupt-Driven I/O — устройства средней интенсивности
  • DMA — высокоскоростные устройства, массовые передачи данных (диски, сеть)
  • Современные системы комбинируют методы для разных типов устройств
Подсистема ввода-вывода
Архитектура ОС

4. Безопасность и управление доступом

4.1. Контроль доступа к устройствам

Принцип наименьших привилегий: каждому пользователю или процессу предоставляется минимальный набор прав, необходимых для выполнения задач.

  • Снижает потенциальный ущерб от взлома или ошибки
  • Ограничивает возможности несанкционированного доступа
Подсистема ввода-вывода
Архитектура ОС

4.1. Разграничение доступа

Уровни доступа

  • Обычные пользователи — чтение с CD-ROM, но не запись
  • Администраторы — полный доступ ко всем устройствам
  • Системные службы — ограниченный доступ

Механизмы разграничения

  • Списки контроля доступа (ACLs)
  • Управление через файловую систему
  • Права доступа к файлам устройств
Подсистема ввода-вывода
Архитектура ОС

4.1. Файлы устройств в Unix

Многие устройства в Unix-подобных системах представляются как файлы:

  • /dev/sda — дисковое устройство
  • /dev/tty — терминал
  • /dev/null — пустое устройство
  • Права доступа (чтение, запись, выполнение) контролируются стандартными механизмами файловой системы
Подсистема ввода-вывода
Архитектура ОС

4.2. Предотвращение несанкционированного доступа

  • Шифрование данных, передаваемых между устройствами и памятью
  • Контроль целостности данных при передаче
  • Изоляция адресных пространств процессов
  • Аппаратная поддержка защиты (IOMMU)
Подсистема ввода-вывода
Архитектура ОС

4.3. Аутентификация и авторизация устройств

  • Проверка подлинности устройств при подключении к системе
  • Особенно важно для сетевых устройств и устройств хранения данных
  • Поддержка стандарта IEEE 802.1X (сетевая аутентификация)
  • Цифровые сертификаты и подписи для драйверов
Подсистема ввода-вывода
Архитектура ОС

4.4. Проблемы безопасности в подсистеме В/В

Уязвимости драйверов:

  • Драйверы часто содержат ошибки и уязвимости
  • Злоумышленники могут получить контроль над системой
  • Решение: регулярное обновление, статический анализ кода

Атаки на прерывания:

  • Перехват или подделка прерываний
  • Нарушение работы системы
  • Решение: защищённые векторы прерываний, аутентификация
Подсистема ввода-вывода
Архитектура ОС

4.4. Атаки через DMA

  • Злоумышленники могут использовать DMA для доступа к памяти без ведома ЦП
  • Прямой доступ к оперативной памяти в обход механизмов защиты ОС
  • Решение:
    • Ограничение доступа к DMA
    • Использование IOMMU (Input-Output Memory Management Unit)
    • Контроль целостности памяти
Подсистема ввода-вывода
Архитектура ОС

Заключение

  • Подсистема В/В играет ключевую роль в архитектуре ОС
  • Архитектура строится на уровнях абстракции: аппаратный, драйверов, API
  • Три основных метода В/В: PIO, Interrupt-Driven I/O, DMA
  • Безопасность подсистемы В/В требует комплексного подхода
  • Выбор метода В/В зависит от конкретных требований к производительности и безопасности
Подсистема ввода-вывода
Архитектура ОС

Ключевые выводы лекции

  • Подсистема В/В — интерфейс между ОС и внешними устройствами

  • Драйверы абстрагируют аппаратные детали от ядра

  • PIO прост, но неэффективен

  • Прерывания освобождают ЦП от ожидания

  • DMA обеспечивает максимальную производительность

  • Права доступа к устройствам управляются через файловую систему

  • Безопасность В/В включает защиту от атак на драйверы, прерывания и DMA

  • Постоянное развитие технологий В/В требует внимания к новым вызовам

Подсистема ввода-вывода
Архитектура ОС

Вопросы для самоконтроля

  1. Какие основные компоненты входят в подсистему ввода-вывода?
  2. В чём заключается роль драйвера устройства и из каких частей он состоит?
  3. Какие уровни абстракции используются в подсистеме В/В?
  4. В чём различие между программируемым вводом-выводом (PIO) и вводом-выводом по прерываниям?
  5. Как работает прямой доступ к памяти (DMA) и в чём его преимущества?
  6. Какие механизмы контроля доступа к устройствам используются в ОС?
  7. Какие угрозы безопасности связаны с подсистемой В/В и как они устраняются?
  8. Как устройства представляются в файловой системе Unix-подобных ОС?
Подсистема ввода-вывода
Архитектура ОС

Рекомендуемые ресурсы

Основная литература:

  1. Таненбаум Э., Бос Х. Современные операционные системы. 4-е изд.
  2. Столлингс В. Операционные системы. 9-е изд.

Дополнительная литература:

  1. Руссинович М., Маргосис И. Windows Internals. 7-е изд.
  2. Love R. Linux Kernel Development. 3rd ed.
  3. Документация Linux Kernel: https://www.kernel.org/doc/html/latest/
Подсистема ввода-вывода

Озвучить план лекции. Четыре блока: архитектура подсистемы, управление устройствами, методы ввода-вывода и безопасность. Идём от общего к частному.

Подсистема В/В — одна из ключевых в ОС. Привести пример: даже нажатие клавиши запускает сложную цепочку операций. Без В/В компьютер оторван от внешнего мира.

Четыре уровня: ядро → драйверы → контроллеры → устройства. Аналогия с этажами здания: каждый опирается на нижний и абстрагирует его.

Чётко разделить «железо» и «софт». Аппаратная часть — шины PCI/USB, контроллеры, порты. Программная — драйверы, API, подсистемы памяти и прерываний.

Драйвер — «переводчик» между ОС и устройством. Пример: разные принтеры понимают разные команды, а ОС работает с ними одинаково благодаря драйверам.

Три компонента драйвера: инициализация, обработчики прерываний, функции управления. Акцент — на обработчиках прерываний, это наиболее критичная часть.

Уровни абстракции позволяют менять аппаратуру без переработки ОС. Аналогия: API — розетка, драйвер — переходник, устройство — вилка.

Переходим ко второму разделу. При загрузке ОС автоматически обнаруживает устройства и загружает драйверы — это Plug-and-Play.

Ресурсы ограничены, и устройства конкурируют за них. Исторически конфликты IRQ были серьёзной проблемой. Plug-and-Play решил большинство из них автоматически.

Прерывания — основной механизм взаимодействия устройств с ЦП. Устройство «стучится» к процессору, когда ему нужно внимание. Эффективная обработка критична для отзывчивости системы.

Буферизация решает проблему разницы скоростей. Пример: жёсткий диск медленнее ЦП в миллионы раз. Три вида буферов — от простого к более эффективному.

Третий раздел — ядро лекции. Три метода В/В от простого к сложному. Начнём с самого простого — программируемого ввода-вывода.

Переход от опроса к прерываниям — существенный шаг вперёд. ЦП больше не «крутит колёса» в цикле, а получает уведомление, когда устройство готово.

DMA — «золотой стандарт» для высокоскоростных устройств. Пример: при копировании файла с диска DMA передаёт данные, а ЦП свободен для других задач.

Сводная таблица трёх методов. Акцент: выбор метода — всегда компромисс между производительностью, загрузкой ЦП и сложностью реализации.

На практике в одной системе используются все три метода. Клавиатура — PIO, мышь — прерывания, диски и сеть — DMA. Современные ОС комбинируют подходы.

Четвёртый раздел — безопасность. Устройства — потенциальный вектор атаки. Принцип наименьших привилегий — основа защиты: минимум прав, необходимый для работы.

Разные роли — разные права. Пример: обычный пользователь читает CD-ROM, но не может напрямую писать на диск. ACLs и файловые права — основные механизмы.

Философия Unix: всё есть файл, даже устройства. Примеры /dev/sda, /dev/null. Права доступа через chmod/chown — привычный и мощный механизм.

Комплексная защита: шифрование при передаче, контроль целостности, изоляция процессов. IOMMU — аппаратная защита от несанкционированного доступа через DMA.

Устройства тоже нужно аутентифицировать, особенно сетевые. IEEE 802.1X и цифровые сертификаты для драйверов — основные механизмы доверия.

Драйверы — самое слабое звено: работают в режиме ядра, ошибки критичны. Пример: BlueBorne — атака через Bluetooth-драйвер, затронувшая миллионы устройств.

DMA-атаки — прямая угроза при физическом доступе. Через FireWire или Thunderbolt можно прочитать всю оперативную память. IOMMU — основное контрмерное средство.

Подвести итог лекции. Четыре ключевых блока: архитектура с уровнями абстракции, управление устройствами, три метода В/В и комплексная безопасность.

Две колонки с главными тезисами. Акцент: DMA — лучший метод для высокоскоростных устройств, а безопасность В/В требует многоуровневого подхода.

Вопросы для самопроверки. Рекомендовать студентам ответить на каждый, а при затруднениях — перечитать соответствующий раздел лекции.

Рекомендованная литература. Таненбаум — основной учебник, Руссинович — для глубокого изучения Windows, документация ядра Linux — первоисточник.